#coding=utf-8
import re

'''
总结下：
\d   数字
\w   字母＋数字＋_  即[A-Za-z0-9_] ，不能匹配特殊字符,  反之\W 匹配非单词字符，比如&,空格，\n，\r,\t等
\s   空白字符，比如\n,\t,\r,空格，反之\S 匹配非空白字符,包括数字

* ０或无限
+  1或无限
？　０或１

(){3}  字符串匹配，比如 re.findall('(Python){3}) 严格匹配Python　３次
'''



str = 'C|C++|Java|C#|Python|Javascript'
result = re.findall('Python',str)  #具体的常亮，普通字符
　

str1 =  'C0C++9Java8C#7Python6Javascript'
result1 = re.findall('\D',str1) # \d表示一个数字，元字符,相应的，非数字用\D　表示


str2 = 'abc,acc,adc,aec,afc,ahc'
result = re.findall('a[cf]c',str2) # re.findall('a[^cf]c',str2)取反；re.findall('a[c-f]c',str2) 范围


str3 = 'python1234java567php'
result = re.findall('[a-z]{3,6}',str3) #贪婪与非贪婪，默认为贪婪模式，非贪婪模式为: [a-z]{3,6}? 


str4 = 'pytho0python1pythonn2'
result = re.findall('python*',str4) # python+, python?

str5 = 'PythonC#JavaPHP'
result = re.findall('c#',str5,re.I) #第三个参数flags中的re.I表示不区分大小写

str6 = 'PythonC#\nJavaPHP' 
'''
在正则表达式里，. 代表除了换行符\n外的任意字符。如果要能匹配\n，则可以在flags中加入 re.S,多个flags可以使用　｜　分割
'''
result = re.findall('c#.{1}',str6,re.I | re.S)